Flash memory differs from many other types of non-volatile memory in that it has a limited and predictable lifetime. While a hard disk may experience random location failures over its life, a flash memory may have a limit of tens of thousands of write cycles for each memory location. To accommodate such a limited life, a memory controller may incorporate a technique for wear-leveling, that is, invoking a mapping function to point data destined for a logical address to a movable physical location. When a given physical address reaches a threshold number of writes, the mapping function will remap the logical address to a different physical location.
The wear-leveling function is normally carried out by a full-function memory controller, or in some cases, an advanced flash memory with built-in wear-leveling circuitry. However, in a cost sensitive implementation, reliance on either of these options may be cost prohibitive. While software memory controllers or interface drivers may provide a wear-leveling solution for a fully operational electronic device, the issue of wear-leveling during a boot cycle may still need to be addressed separately because of the critical nature of the boot process and the need to protect flash memory during this early phase of electronic device operation before such controllers or drivers are in place.